--- title: Title keywords: fastai sidebar: home_sidebar nb_path: "nbs\90_tutorial.ipynb" ---
from fastai.torch_core import set_seed
from fastai.vision.all import *
from fastai.medical.imaging import *
from torchvision.utils import save_image
from fmi.data import *
from fmi.core import *
from fmi.windows import *
source = 'D:/Datasets/Melanoma/'
files = os.listdir(source)
mel_items = get_dicom_files(source, folders='train')
source2 = 'D:/Datasets/osic-pulmonary-fibrosis-progression/'
os_items = get_dicom_files(source2, folders='train')
df_unique = pd.read_csv(f'{source2}/uniq.csv')
test1 = 'D:/Datasets/osic-pulmonary-fibrosis-progression/train/ID00009637202177434476278'
test_files = get_dicom_files(test1)
def random_(items, value=500):
randomList = []
for i in range(0,value):
randomList.append(random.randint(0,10000))
return items[randomList]
random_(os_items, 100)
check_duplicate(random_(mel_items, 100), seed=77)
set_seed(7)
get_x1 = lambda x:f'{source2}/pct_window/{x.Patient}/{str(x.file)[2:-2]}'
get_y1 = ColReader('SmokingStatus')
blocks = (ImageBlock(cls=PEWindow), CategoryBlock)
db = DataBlock(blocks=blocks,
get_x=get_x1,
splitter=RandomSplitter(),
item_tfms=Resize(512),
get_y=get_y1,
batch_tfms=[IntToFloatTensor(div=255)])
db.summary(df_unique)
db.batch_tfms
dls = db.dataloaders(df_unique, bs=16, n_workers=0)
dls.show_batch(figsize=(20,20))
s = 'D:/Datasets/osic-pulmonary-fibrosis-progression/train/'
sort_items = get_dicom_files(s, folders='ID00007637202177411956430')
sort_items
View images in the folder - they are not sorted in order
%%time
imgs = []
for filename in sort_items:
file = dcmread(filename).pixel_array
img = TensorDicom(file)
imgs.append(img)
show_images(imgs, nrows=3)
%%time
instance_show(sort_items, nrows=3)
m_items = get_dicom_files('D:/Datasets/osic-pulmonary-fibrosis-progression/train/ID00007637202177411956430')
source = 'D:/Datasets/osic-pulmonary-fibrosis-progression/train/'
dicom_dataframe = pd.DataFrame.from_dicoms(m_items)
dicom_dataframe[:2]
mask_and_save(dicom_dataframe[:20], show=True, source=source, sigma=0.2, save=False)
mask_and_save(dicom_dataframe[:20], show=True, source=source, sigma=0.1, save=False)
mask_and_save(dicom_dataframe[:20], show=True, source=source, sigma=0.01, save=False)
pct = dicom_dataframe[['PatientID', 'InstanceNumber', 'img_pct_window', 'img_mean', 'img_std']].sort_values(by=['img_pct_window'], ascending=False).reset_index(drop=True)
pct[:5]
get_dicom_image(pct[:30], 'img_pct_window', source=source)
mean = dicom_dataframe[['PatientID', 'InstanceNumber', 'img_pct_window', 'img_mean', 'img_std']].sort_values(by=['img_mean'], ascending=True).reset_index(drop=True)
mean[:5]
get_dicom_image(mean[:30], 'img_mean', source=source)
std = dicom_dataframe[['PatientID', 'InstanceNumber', 'img_pct_window', 'img_mean', 'img_std']].sort_values(by=['img_std'], ascending=True).reset_index(drop=True)
std[:5]
get_dicom_image(std[:30], 'img_std', source=source)
dicom_dataframe = pd.DataFrame.from_dicoms2(test_files, windows=dicom_windows.mediastinum)
dicom_dataframe[:2]
dicom_dataframe = pd.DataFrame.from_dicoms2(test_files, windows=dicom_windows.lungs)
dicom_dataframe[:2]
save_dir = 'D:/Datasets/osic-pulmonary-fibrosis-progression/test3c/'
test1 = test_files[12]
test1
dicom_convert_3channel(test1, save_dir, win1=dicom_windows.lungs, win2=dicom_windows.mediastinum, win3=dicom_windows.pe)
Test saved image
saved_image = PILImage.create('D:/Datasets/osic-pulmonary-fibrosis-progression/test3c/11.jpg')
saved_ten = TensorImage(saved_image)
saved_ten.shape
show_images([saved_ten[:,:,:], saved_ten[:,:,0], saved_ten[:,:,1], saved_ten[:,:,2]],\
titles=['all_channels', 'channel_one', 'channel_two', 'channel_three'])